package utils

import (
	"encoding/json"
	"net/http"
	"server/config"

	"github.com/gin-gonic/gin"
)

func JSONResponse(c *gin.Context, code int, msg string, data interface{}) {
	// 构建响应结构
	res := gin.H{
		"code": code,
		"msg":  msg,
		"data": data,
	}

	// 将响应对象序列化为 JSON 字节
	jsonData, err := json.Marshal(res)
	if err != nil {
		c.AbortWithError(http.StatusInternalServerError, err)
		return
	}

	// 加密 JSON 数据
	encryptedData, err := AESEncrypt(jsonData, config.Aes.Key)
	if err != nil {
		c.AbortWithError(http.StatusInternalServerError, err)
		return
	}

	// 返回加密后的响应（内容类型设为 text/plain）
	c.Data(http.StatusOK, "text/plain; charset=utf-8", []byte(encryptedData))
}
